package main

// 739. 每日温度
func main() {

}

func dailyTemperatures(temperatures []int) []int {
	var stack []int // 单调栈存储下标, 每个元素遍历，再通过单调栈找历时的数据给结果
	res := make([]int, len(temperatures))

	for idx, temp := range temperatures {
		for len(stack) > 0 && temp > temperatures[stack[len(stack)-1]] {
			res[stack[len(stack)-1]] = idx - stack[len(stack)-1]
			stack = stack[:len(stack)-1]
		}
		stack = append(stack, idx)
	}

	return res
}

// 给定一个整数数组 temperatures ，表示每天的温度，返回一个数组 answer ，其中 answer[i] 是指对于第 i 天，下一个更高温度出现在几天后。如果气温在这之后都不会升高，请在该位置用 0 来代替。
//
//示例 1:
//
//输入: temperatures = [73,74,75,71,69,72,76,73]
//输出: [1,1,4,2,1,1,0,0]
//示例 2:
//
//输入: temperatures = [30,40,50,60]
//输出: [1,1,1,0]
//示例 3:
//
//输入: temperatures = [30,60,90]
//输出: [1,1,0]
//
//
//提示：
//
//1 <= temperatures.length <= 105
//30 <= temperatures[i] <= 100
